EGL_LkC_plot <- ggplot(data = EGL_LkC, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = EGL_LkC_axis_set$chr, 
                     breaks = EGL_LkC_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(EGL_LkC_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "East Grand L. vs L. Champlain", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
EGL_LkC_plot

EGL_PtL_plot <- ggplot(data = EGL_PtL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = EGL_PtL_axis_set$chr, 
                     breaks = EGL_PtL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(EGL_PtL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "East Grand L. vs Pattagansett L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
EGL_PtL_plot

EGL_QnL_plot <- ggplot(data = EGL_QnL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = EGL_QnL_axis_set$chr, 
                     breaks = EGL_QnL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(EGL_QnL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "East Grand L. vs Quonnipaug L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
EGL_QnL_plot

EGL_RgL_plot <- ggplot(data = EGL_RgL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = EGL_RgL_axis_set$chr, 
                     breaks = EGL_RgL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(EGL_RgL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "East Grand L. vs Rogers L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
EGL_RgL_plot

EGL_RnR_plot <- ggplot(data = EGL_RnR, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = EGL_RnR_axis_set$chr, 
                     breaks = EGL_RnR_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(EGL_RnR_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "East Grand L. vs Roanoke R.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
EGL_RnR_plot

PtL_QnL_plot <- ggplot(data = PtL_QnL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = PtL_QnL_axis_set$chr, 
                     breaks = PtL_QnL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(PtL_QnL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "Pattagansett L. vs Quonnipaug L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
PtL_QnL_plot

PtL_RgL_plot <- ggplot(data = PtL_RgL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = PtL_RgL_axis_set$chr, 
                     breaks = PtL_RgL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(PtL_RgL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "Pattagansett L. vs Rogers L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
PtL_RgL_plot

RgL_QnL_plot <- ggplot(data = RgL_QnL, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = RgL_QnL_axis_set$chr, 
                     breaks = RgL_QnL_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(RgL_QnL_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "Rogers L. vs Quonnipaug L.", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
RgL_QnL_plot

RnR_LkC_plot <- ggplot(data = RnR_LkC, 
                       mapping = aes(x = pos_cum, 
                                     y = Fst, 
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = RnR_LkC_axis_set$chr, 
                     breaks = RnR_LkC_axis_set$center) +
  scale_y_continuous(expand = c(0,0), 
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"), 
                                  unique(length(RnR_LkC_axis_set$chr)))) +
  labs(x = NULL, 
       y = "Fst", 
       title = "Roanoke R. vs L. Champlain", 
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
RnR_LkC_plot

RnR_PtL_plot <- ggplot(data = RnR_PtL,
                       mapping = aes(x = pos_cum,
                                     y = Fst,
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = RnR_PtL_axis_set$chr,
                     breaks = RnR_PtL_axis_set$center) +
  scale_y_continuous(expand = c(0,0),
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"),
                                  unique(length(RnR_PtL_axis_set$chr)))) +
  labs(x = NULL,
       y = "Fst",
       title = "Roanoke R. vs Pattagansett L.",
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
RnR_PtL_plot

RnR_QnL_plot <- ggplot(data = RnR_QnL,
                       mapping = aes(x = pos_cum,
                                     y = Fst,
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = RnR_QnL_axis_set$chr,
                     breaks = RnR_QnL_axis_set$center) +
  scale_y_continuous(expand = c(0,0),
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"),
                                  unique(length(RnR_QnL_axis_set$chr)))) +
  labs(x = NULL,
       y = "Fst",
       title = "Roanoke R. vs Quonnipaug L.",
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
RnR_QnL_plot

RnR_RgL_plot <- ggplot(data = RnR_RgL,
                       mapping = aes(x = pos_cum,
                                     y = Fst,
                                     color = as_factor(chr))) +
  geom_point(alpha = 0.75, size = 0.5) +
  scale_x_continuous(label = RnR_RgL_axis_set$chr,
                     breaks = RnR_RgL_axis_set$center) +
  scale_y_continuous(expand = c(0,0),
                     limits = c(-0.05, 1)) +
  scale_color_manual(values = rep(c("#242b35", "#869ca8"),
                                  unique(length(RnR_RgL_axis_set$chr)))) +
  labs(x = NULL,
       y = "Fst",
       title = "Roanoke R. vs Rogers L.",
       subtitle = "Size 50,000 Step 10,000") +
  theme_bw() +
  theme(legend.position = "none",
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        axis.title.y = element_markdown(),
        axis.text.x = element_text(angle = 90,
                                  size = 8,
                                  vjust = 0.5))
RnR_RgL_plot

### Using ggsave to save the manhattan plots, or as I will now refer to it: ###
# Saving Private Plots (Ryan lol) ##
ggsave("figures/sliding-windows-fst/MIDA-x-NATLA-sz50-chrom19-spike.png", 
       plot = mxn50_chr19_spike_plot, 
       width = 10, 
       height = 4)
LS0tCnRpdGxlOiAiU2xpZGluZyBXaW5kb3dzIEFuYWx5c2lzIgpzdWJ0aXRsZTogIldlaXJkIFBvcHVsYXRpb25zLCBTaXplIDUwa2Igc3RlcCAxMGtiIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBsaWJyYXJpZXMsIGVjaG8gPSBGQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ2d0ZXh0KQpgYGAKCmBgYHtyIGRhdGFfb3JnLCBlY2hvID0gRkFMU0V9CmNvbHMgPC0gYygicmVnaW9uIiwgCiAgICAgICAgICAiY2hyIiwgCiAgICAgICAgICAibWlkUG9zIiwgCiAgICAgICAgICAiTnNpdGVzIiwgCiAgICAgICAgICAiRnN0IikKCgojIyMgRWFzdCBHcmFuZCBMYWtlIHZzIExha2UgQ2hhbXBsYWluICMjIwpFR0xfTGtDIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvRUdMLS14LS1Ma0MtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsIAogICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpFR0xfTGtDX2N1bSA8LSBFR0xfTGtDICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpFR0xfTGtDIDwtIEVHTF9Ma0MgJT4lCiAgaW5uZXJfam9pbihFR0xfTGtDX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKRUdMX0xrQ19heGlzX3NldCA8LSBFR0xfTGtDICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgRWFzdCBHcmFuZCBMYWtlIHZzIFBhdHRhZ2Fuc2V0dCBMYWtlICMjIwpFR0xfUHRMIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvRUdMLS14LS1QdEwtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsIAogICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpFR0xfUHRMX2N1bSA8LSBFR0xfUHRMICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpFR0xfUHRMIDwtIEVHTF9QdEwgJT4lCiAgaW5uZXJfam9pbihFR0xfUHRMX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKRUdMX1B0TF9heGlzX3NldCA8LSBFR0xfUHRMICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgRWFzdCBHcmFuZCBMYWtlIHZzIFF1b25uaXBhdWcgTGFrZSAjIyMKRUdMX1FuTCA8LSByZWFkX2RlbGltKCJkYXRhL3NsaWRpbmdfd2luZG93X2ZzdF93ZWlyZG9zL0VHTC0teC0tUW5MLS1zaXplLTUwMDAwLS1zdGVwLTEwMDAwLnRzdiIsIAogICAgICAgICAgICAgICAgICAgIHNraXAgPSAyLCAKICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGNvbHMsCiAgICAgICAgICAgICAgICAgICAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkKRUdMX1FuTF9jdW0gPC0gRUdMX1FuTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShtYXhfcG9zID0gbWF4KG1pZFBvcykpICU+JQogIG11dGF0ZShwb3NfYWRkID0gbGFnKGN1bXN1bShtYXhfcG9zKSwgZGVmYXVsdCA9IDApKSAlPiUKICBzZWxlY3QoY2hyLCBwb3NfYWRkKQoKRUdMX1FuTCA8LSBFR0xfUW5MICU+JQogIGlubmVyX2pvaW4oRUdMX1FuTF9jdW0sIGJ5ID0gImNociIpICU+JQogIG11dGF0ZShwb3NfY3VtID0gbWlkUG9zICsgcG9zX2FkZCkKCkVHTF9RbkxfYXhpc19zZXQgPC0gRUdMX1FuTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShjZW50ZXIgPSBtZWFuKHBvc19jdW0pKQoKIyMjIEVhc3QgR3JhbmQgTGFrZSB2cyBSb2dlcnMgTGFrZSAjIyMKRUdMX1JnTCA8LSByZWFkX2RlbGltKCJkYXRhL3NsaWRpbmdfd2luZG93X2ZzdF93ZWlyZG9zL0VHTC0teC0tUmdMLS1zaXplLTUwMDAwLS1zdGVwLTEwMDAwLnRzdiIsIAogICAgICAgICAgICAgICAgICAgIHNraXAgPSAyLCAKICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGNvbHMsCiAgICAgICAgICAgICAgICAgICAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkKRUdMX1JnTF9jdW0gPC0gRUdMX1JnTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShtYXhfcG9zID0gbWF4KG1pZFBvcykpICU+JQogIG11dGF0ZShwb3NfYWRkID0gbGFnKGN1bXN1bShtYXhfcG9zKSwgZGVmYXVsdCA9IDApKSAlPiUKICBzZWxlY3QoY2hyLCBwb3NfYWRkKQoKRUdMX1JnTCA8LSBFR0xfUmdMICU+JQogIGlubmVyX2pvaW4oRUdMX1JnTF9jdW0sIGJ5ID0gImNociIpICU+JQogIG11dGF0ZShwb3NfY3VtID0gbWlkUG9zICsgcG9zX2FkZCkKCkVHTF9SZ0xfYXhpc19zZXQgPC0gRUdMX1JnTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShjZW50ZXIgPSBtZWFuKHBvc19jdW0pKQoKIyMjIEVhc3QgR3JhbmQgTGFrZSB2cyBSb2Fub2tlIFJpdmVyICMjIwpFR0xfUm5SIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvRUdMLS14LS1SblItLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsIAogICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpFR0xfUm5SX2N1bSA8LSBFR0xfUm5SICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpFR0xfUm5SIDwtIEVHTF9SblIgJT4lCiAgaW5uZXJfam9pbihFR0xfUm5SX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKRUdMX1JuUl9heGlzX3NldCA8LSBFR0xfUm5SICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgUGF0dGFnYW5zZXR0IExha2UgdnMgUXVvbm5pcGF1ZyBMYWtlICMjIwpQdExfUW5MIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvUHRMLS14LS1RbkwtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsIAogICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpQdExfUW5MX2N1bSA8LSBQdExfUW5MICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpQdExfUW5MIDwtIFB0TF9RbkwgJT4lCiAgaW5uZXJfam9pbihQdExfUW5MX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKUHRMX1FuTF9heGlzX3NldCA8LSBQdExfUW5MICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgUGF0dGFnYW5zZXR0IExha2UgdnMgUm9nZXJzIExha2UgIyMjClB0TF9SZ0wgPC0gcmVhZF9kZWxpbSgiZGF0YS9zbGlkaW5nX3dpbmRvd19mc3Rfd2VpcmRvcy9QdEwtLXgtLVJnTC0tc2l6ZS01MDAwMC0tc3RlcC0xMDAwMC50c3YiLCAKICAgICAgICAgICAgICAgICAgICBza2lwID0gMiwgCiAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiXHQiLCAKICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjb2xzLAogICAgICAgICAgICAgICAgICAgIHNob3dfY29sX3R5cGVzID0gRkFMU0UpClB0TF9SZ0xfY3VtIDwtIFB0TF9SZ0wgJT4lCiAgZ3JvdXBfYnkoY2hyKSAlPiUKICBzdW1tYXJpc2UobWF4X3BvcyA9IG1heChtaWRQb3MpKSAlPiUKICBtdXRhdGUocG9zX2FkZCA9IGxhZyhjdW1zdW0obWF4X3BvcyksIGRlZmF1bHQgPSAwKSkgJT4lCiAgc2VsZWN0KGNociwgcG9zX2FkZCkKClB0TF9SZ0wgPC0gUHRMX1JnTCAlPiUKICBpbm5lcl9qb2luKFB0TF9SZ0xfY3VtLCBieSA9ICJjaHIiKSAlPiUKICBtdXRhdGUocG9zX2N1bSA9IG1pZFBvcyArIHBvc19hZGQpCgpQdExfUmdMX2F4aXNfc2V0IDwtIFB0TF9SZ0wgJT4lCiAgZ3JvdXBfYnkoY2hyKSAlPiUKICBzdW1tYXJpc2UoY2VudGVyID0gbWVhbihwb3NfY3VtKSkKCiMjIyBSb2dlcnMgTGFrZSB2cyBRdW9ubmlwYXVnIExha2UgIyMjClJnTF9RbkwgPC0gcmVhZF9kZWxpbSgiZGF0YS9zbGlkaW5nX3dpbmRvd19mc3Rfd2VpcmRvcy9SZ0wtLXgtLVFuTC0tc2l6ZS01MDAwMC0tc3RlcC0xMDAwMC50c3YiLCAKICAgICAgICAgICAgICAgICAgICBza2lwID0gMiwgCiAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiXHQiLCAKICAgICAgICAgICAgICAgICAgICBjb2xfbmFtZXMgPSBjb2xzLAogICAgICAgICAgICAgICAgICAgIHNob3dfY29sX3R5cGVzID0gRkFMU0UpClJnTF9RbkxfY3VtIDwtIFJnTF9RbkwgJT4lCiAgZ3JvdXBfYnkoY2hyKSAlPiUKICBzdW1tYXJpc2UobWF4X3BvcyA9IG1heChtaWRQb3MpKSAlPiUKICBtdXRhdGUocG9zX2FkZCA9IGxhZyhjdW1zdW0obWF4X3BvcyksIGRlZmF1bHQgPSAwKSkgJT4lCiAgc2VsZWN0KGNociwgcG9zX2FkZCkKClJnTF9RbkwgPC0gUmdMX1FuTCAlPiUKICBpbm5lcl9qb2luKFJnTF9RbkxfY3VtLCBieSA9ICJjaHIiKSAlPiUKICBtdXRhdGUocG9zX2N1bSA9IG1pZFBvcyArIHBvc19hZGQpCgpSZ0xfUW5MX2F4aXNfc2V0IDwtIFJnTF9RbkwgJT4lCiAgZ3JvdXBfYnkoY2hyKSAlPiUKICBzdW1tYXJpc2UoY2VudGVyID0gbWVhbihwb3NfY3VtKSkKCiMjIyBSb2Fub2tlIFJpdmVyIHZzIExha2UgQ2hhbXBsYWluICMjIwpSblJfTGtDIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvUm5SLS14LS1Ma0MtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsIAogICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpSblJfTGtDX2N1bSA8LSBSblJfTGtDICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpSblJfTGtDIDwtIFJuUl9Ma0MgJT4lCiAgaW5uZXJfam9pbihSblJfTGtDX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKUm5SX0xrQ19heGlzX3NldCA8LSBSblJfTGtDICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgUm9hbm9rZSBSaXZlciB2cyBQYXR0YWdhbnNldHQgTGFrZSAjIyMKUm5SX1B0TCA8LSByZWFkX2RlbGltKCJkYXRhL3NsaWRpbmdfd2luZG93X2ZzdF93ZWlyZG9zL1JuUi0teC0tUHRMLS1zaXplLTUwMDAwLS1zdGVwLTEwMDAwLnRzdiIsCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsCiAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiXHQiLAogICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGNvbHMsCiAgICAgICAgICAgICAgICAgICAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkKUm5SX1B0TF9jdW0gPC0gUm5SX1B0TCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShtYXhfcG9zID0gbWF4KG1pZFBvcykpICU+JQogIG11dGF0ZShwb3NfYWRkID0gbGFnKGN1bXN1bShtYXhfcG9zKSwgZGVmYXVsdCA9IDApKSAlPiUKICBzZWxlY3QoY2hyLCBwb3NfYWRkKQoKUm5SX1B0TCA8LSBSblJfUHRMICU+JQogIGlubmVyX2pvaW4oUm5SX1B0TF9jdW0sIGJ5ID0gImNociIpICU+JQogIG11dGF0ZShwb3NfY3VtID0gbWlkUG9zICsgcG9zX2FkZCkKClJuUl9QdExfYXhpc19zZXQgPC0gUm5SX1B0TCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShjZW50ZXIgPSBtZWFuKHBvc19jdW0pKQoKIyMjIFJvYW5va2UgUml2ZXIgdnMgUXVvbm5pcGF1ZyBMYWtlICMjIwpSblJfUW5MIDwtIHJlYWRfZGVsaW0oImRhdGEvc2xpZGluZ193aW5kb3dfZnN0X3dlaXJkb3MvUm5SLS14LS1RbkwtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwKICAgICAgICAgICAgICAgICAgICBza2lwID0gMiwKICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICJcdCIsCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gY29scywKICAgICAgICAgICAgICAgICAgICBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQpSblJfUW5MX2N1bSA8LSBSblJfUW5MICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKG1heF9wb3MgPSBtYXgobWlkUG9zKSkgJT4lCiAgbXV0YXRlKHBvc19hZGQgPSBsYWcoY3Vtc3VtKG1heF9wb3MpLCBkZWZhdWx0ID0gMCkpICU+JQogIHNlbGVjdChjaHIsIHBvc19hZGQpCgpSblJfUW5MIDwtIFJuUl9RbkwgJT4lCiAgaW5uZXJfam9pbihSblJfUW5MX2N1bSwgYnkgPSAiY2hyIikgJT4lCiAgbXV0YXRlKHBvc19jdW0gPSBtaWRQb3MgKyBwb3NfYWRkKQoKUm5SX1FuTF9heGlzX3NldCA8LSBSblJfUW5MICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgojIyMgUm9hbm9rZSBSaXZlciB2cyBSb2dlcnMgTGFrZSAjIyMKUm5SX1JnTCA8LSByZWFkX2RlbGltKCJkYXRhL3NsaWRpbmdfd2luZG93X2ZzdF93ZWlyZG9zL1JuUi0teC0tUmdMLS1zaXplLTUwMDAwLS1zdGVwLTEwMDAwLnRzdiIsCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDIsCiAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAiXHQiLAogICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGNvbHMsCiAgICAgICAgICAgICAgICAgICAgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkKUm5SX1JnTF9jdW0gPC0gUm5SX1JnTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShtYXhfcG9zID0gbWF4KG1pZFBvcykpICU+JQogIG11dGF0ZShwb3NfYWRkID0gbGFnKGN1bXN1bShtYXhfcG9zKSwgZGVmYXVsdCA9IDApKSAlPiUKICBzZWxlY3QoY2hyLCBwb3NfYWRkKQoKUm5SX1JnTCA8LSBSblJfUmdMICU+JQogIGlubmVyX2pvaW4oUm5SX1JnTF9jdW0sIGJ5ID0gImNociIpICU+JQogIG11dGF0ZShwb3NfY3VtID0gbWlkUG9zICsgcG9zX2FkZCkKClJuUl9SZ0xfYXhpc19zZXQgPC0gUm5SX1JnTCAlPiUKICBncm91cF9ieShjaHIpICU+JQogIHN1bW1hcmlzZShjZW50ZXIgPSBtZWFuKHBvc19jdW0pKQpgYGAKCgpgYGB7ciBFR0xfeF9Ma0N9CkVHTF9Ma0NfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IEVHTF9Ma0MsIAogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gRUdMX0xrQ19heGlzX3NldCRjaHIsIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBFR0xfTGtDX2F4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChFR0xfTGtDX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsIAogICAgICAgeSA9ICJGc3QiLCAKICAgICAgIHRpdGxlID0gIkVhc3QgR3JhbmQgTC4gdnMgTC4gQ2hhbXBsYWluIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJTaXplIDUwLDAwMCBTdGVwIDEwLDAwMCIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X21hcmtkb3duKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmp1c3QgPSAwLjUpKQpFR0xfTGtDX3Bsb3QKCmBgYAoKCmBgYHtyIEVHTF94X1B0TH0KRUdMX1B0TF9wbG90IDwtIGdncGxvdChkYXRhID0gRUdMX1B0TCwgCiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcG9zX2N1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYXNfZmFjdG9yKGNocikpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUsIHNpemUgPSAwLjUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBFR0xfUHRMX2F4aXNfc2V0JGNociwgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IEVHTF9QdExfYXhpc19zZXQkY2VudGVyKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwwKSwgCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTAuMDUsIDEpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlcChjKCIjMjQyYjM1IiwgIiM4NjljYTgiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUobGVuZ3RoKEVHTF9QdExfYXhpc19zZXQkY2hyKSkpKSArCiAgbGFicyh4ID0gTlVMTCwgCiAgICAgICB5ID0gIkZzdCIsIAogICAgICAgdGl0bGUgPSAiRWFzdCBHcmFuZCBMLiB2cyBQYXR0YWdhbnNldHQgTC4iLCAKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpCkVHTF9QdExfcGxvdAoKYGBgCgpgYGB7ciBFR0xfeF9Rbkx9CkVHTF9RbkxfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IEVHTF9RbkwsIAogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gRUdMX1FuTF9heGlzX3NldCRjaHIsIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBFR0xfUW5MX2F4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChFR0xfUW5MX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsIAogICAgICAgeSA9ICJGc3QiLCAKICAgICAgIHRpdGxlID0gIkVhc3QgR3JhbmQgTC4gdnMgUXVvbm5pcGF1ZyBMLiIsIAogICAgICAgc3VidGl0bGUgPSAiU2l6ZSA1MCwwMDAgU3RlcCAxMCwwMDAiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9tYXJrZG93bigpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZqdXN0ID0gMC41KSkKRUdMX1FuTF9wbG90CgpgYGAKCmBgYHtyIEVHTF94X1JnTH0KRUdMX1JnTF9wbG90IDwtIGdncGxvdChkYXRhID0gRUdMX1JnTCwgCiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcG9zX2N1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYXNfZmFjdG9yKGNocikpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUsIHNpemUgPSAwLjUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBFR0xfUmdMX2F4aXNfc2V0JGNociwgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IEVHTF9SZ0xfYXhpc19zZXQkY2VudGVyKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwwKSwgCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTAuMDUsIDEpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlcChjKCIjMjQyYjM1IiwgIiM4NjljYTgiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUobGVuZ3RoKEVHTF9SZ0xfYXhpc19zZXQkY2hyKSkpKSArCiAgbGFicyh4ID0gTlVMTCwgCiAgICAgICB5ID0gIkZzdCIsIAogICAgICAgdGl0bGUgPSAiRWFzdCBHcmFuZCBMLiB2cyBSb2dlcnMgTC4iLCAKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpCkVHTF9SZ0xfcGxvdAoKYGBgCgpgYGB7ciBFR0xfeF9SblJ9CkVHTF9SblJfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IEVHTF9SblIsIAogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gRUdMX1JuUl9heGlzX3NldCRjaHIsIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBFR0xfUm5SX2F4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChFR0xfUm5SX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsIAogICAgICAgeSA9ICJGc3QiLCAKICAgICAgIHRpdGxlID0gIkVhc3QgR3JhbmQgTC4gdnMgUm9hbm9rZSBSLiIsIAogICAgICAgc3VidGl0bGUgPSAiU2l6ZSA1MCwwMDAgU3RlcCAxMCwwMDAiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9tYXJrZG93bigpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZqdXN0ID0gMC41KSkKRUdMX1JuUl9wbG90CgpgYGAKCmBgYHtyIFB0TF94X1FuTH0KUHRMX1FuTF9wbG90IDwtIGdncGxvdChkYXRhID0gUHRMX1FuTCwgCiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcG9zX2N1bSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYXNfZmFjdG9yKGNocikpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUsIHNpemUgPSAwLjUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBQdExfUW5MX2F4aXNfc2V0JGNociwgCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IFB0TF9RbkxfYXhpc19zZXQkY2VudGVyKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwwKSwgCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTAuMDUsIDEpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlcChjKCIjMjQyYjM1IiwgIiM4NjljYTgiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUobGVuZ3RoKFB0TF9RbkxfYXhpc19zZXQkY2hyKSkpKSArCiAgbGFicyh4ID0gTlVMTCwgCiAgICAgICB5ID0gIkZzdCIsIAogICAgICAgdGl0bGUgPSAiUGF0dGFnYW5zZXR0IEwuIHZzIFF1b25uaXBhdWcgTC4iLCAKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpClB0TF9RbkxfcGxvdAoKYGBgCgpgYGB7ciBQdExfeF9SZ0x9ClB0TF9SZ0xfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IFB0TF9SZ0wsIAogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gUHRMX1JnTF9heGlzX3NldCRjaHIsIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBQdExfUmdMX2F4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChQdExfUmdMX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsIAogICAgICAgeSA9ICJGc3QiLCAKICAgICAgIHRpdGxlID0gIlBhdHRhZ2Fuc2V0dCBMLiB2cyBSb2dlcnMgTC4iLCAKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpClB0TF9SZ0xfcGxvdAoKYGBgCgpgYGB7ciBSZ0xfeF9Rbkx9ClJnTF9RbkxfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IFJnTF9RbkwsIAogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gUmdMX1FuTF9heGlzX3NldCRjaHIsIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBSZ0xfUW5MX2F4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChSZ0xfUW5MX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsIAogICAgICAgeSA9ICJGc3QiLCAKICAgICAgIHRpdGxlID0gIlJvZ2VycyBMLiB2cyBRdW9ubmlwYXVnIEwuIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJTaXplIDUwLDAwMCBTdGVwIDEwLDAwMCIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X21hcmtkb3duKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmp1c3QgPSAwLjUpKQpSZ0xfUW5MX3Bsb3QKCmBgYAoKYGBge3IgUm5SX3hfTGtDfQpSblJfTGtDX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSBSblJfTGtDLCAKICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwb3NfY3VtLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBGc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBhc19mYWN0b3IoY2hyKSkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC43NSwgc2l6ZSA9IDAuNSkgKwogIHNjYWxlX3hfY29udGludW91cyhsYWJlbCA9IFJuUl9Ma0NfYXhpc19zZXQkY2hyLCAKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gUm5SX0xrQ19heGlzX3NldCRjZW50ZXIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLDApLCAKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMC4wNSwgMSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gcmVwKGMoIiMyNDJiMzUiLCAiIzg2OWNhOCIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZShsZW5ndGgoUm5SX0xrQ19heGlzX3NldCRjaHIpKSkpICsKICBsYWJzKHggPSBOVUxMLCAKICAgICAgIHkgPSAiRnN0IiwgCiAgICAgICB0aXRsZSA9ICJSb2Fub2tlIFIuIHZzIEwuIENoYW1wbGFpbiIsIAogICAgICAgc3VidGl0bGUgPSAiU2l6ZSA1MCwwMDAgU3RlcCAxMCwwMDAiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9tYXJrZG93bigpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZqdXN0ID0gMC41KSkKUm5SX0xrQ19wbG90CgpgYGAKCmBgYHtyIFJuUl94X1B0TH0KUm5SX1B0TF9wbG90IDwtIGdncGxvdChkYXRhID0gUm5SX1B0TCwKICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwb3NfY3VtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYXNfZmFjdG9yKGNocikpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUsIHNpemUgPSAwLjUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBSblJfUHRMX2F4aXNfc2V0JGNociwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gUm5SX1B0TF9heGlzX3NldCRjZW50ZXIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLDApLAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUobGVuZ3RoKFJuUl9QdExfYXhpc19zZXQkY2hyKSkpKSArCiAgbGFicyh4ID0gTlVMTCwKICAgICAgIHkgPSAiRnN0IiwKICAgICAgIHRpdGxlID0gIlJvYW5va2UgUi4gdnMgUGF0dGFnYW5zZXR0IEwuIiwKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpClJuUl9QdExfcGxvdAoKYGBgCgpgYGB7ciBSblJfeF9Rbkx9ClJuUl9RbkxfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IFJuUl9RbkwsCiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyA9IGFlcyh4ID0gcG9zX2N1bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBGc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1LCBzaXplID0gMC41KSArCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVsID0gUm5SX1FuTF9heGlzX3NldCRjaHIsCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IFJuUl9RbkxfYXhpc19zZXQkY2VudGVyKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwwKSwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMC4wNSwgMSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gcmVwKGMoIiMyNDJiMzUiLCAiIzg2OWNhOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKGxlbmd0aChSblJfUW5MX2F4aXNfc2V0JGNocikpKSkgKwogIGxhYnMoeCA9IE5VTEwsCiAgICAgICB5ID0gIkZzdCIsCiAgICAgICB0aXRsZSA9ICJSb2Fub2tlIFIuIHZzIFF1b25uaXBhdWcgTC4iLAogICAgICAgc3VidGl0bGUgPSAiU2l6ZSA1MCwwMDAgU3RlcCAxMCwwMDAiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9tYXJrZG93bigpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZqdXN0ID0gMC41KSkKUm5SX1FuTF9wbG90CgpgYGAKCmBgYHtyIFJuUl94X1JnTH0KUm5SX1JnTF9wbG90IDwtIGdncGxvdChkYXRhID0gUm5SX1JnTCwKICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwb3NfY3VtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYXNfZmFjdG9yKGNocikpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUsIHNpemUgPSAwLjUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBSblJfUmdMX2F4aXNfc2V0JGNociwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gUm5SX1JnTF9heGlzX3NldCRjZW50ZXIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLDApLAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSByZXAoYygiIzI0MmIzNSIsICIjODY5Y2E4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUobGVuZ3RoKFJuUl9SZ0xfYXhpc19zZXQkY2hyKSkpKSArCiAgbGFicyh4ID0gTlVMTCwKICAgICAgIHkgPSAiRnN0IiwKICAgICAgIHRpdGxlID0gIlJvYW5va2UgUi4gdnMgUm9nZXJzIEwuIiwKICAgICAgIHN1YnRpdGxlID0gIlNpemUgNTAsMDAwIFN0ZXAgMTAsMDAwIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpClJuUl9SZ0xfcGxvdAoKYGBgCgpgYGB7ciBzYXZpbmdfcGxvdHMsIGV2YWwgPSBGQUxTRX0KIyMjIFVzaW5nIGdnc2F2ZSB0byBzYXZlIHRoZSBtYW5oYXR0YW4gcGxvdHMsIG9yIGFzIEkgd2lsbCBub3cgcmVmZXIgdG8gaXQ6ICMjIwojIFNhdmluZyBQcml2YXRlIFBsb3RzIChSeWFuIGxvbCkgIyMKZ2dzYXZlKCJmaWd1cmVzL3NsaWRpbmctd2luZG93cy1mc3QvTUlEQS14LU5BVExBLXN6NTAtY2hyb20xOS1zcGlrZS5wbmciLCAKICAgICAgIHBsb3QgPSBteG41MF9jaHIxOV9zcGlrZV9wbG90LCAKICAgICAgIHdpZHRoID0gMTAsIAogICAgICAgaGVpZ2h0ID0gNCkKYGBgCgoKCgo=